known 您所在的位置:网站首页 known hosts known

known

2024-07-08 23:21| 来源: 网络整理| 查看: 265

環境

Ubuntu20.4

はじめに

~/.sshの中に、に、authorized_keysとknown_hostsの2つのファイルが存在しています。この2つのファイルの役割について書いてみました。

因みにこの2つのファイルが保存されている場所は、~/.sshであって、ホスト認証で利用される鍵が保管されている、/etc/sshではありません。

解説

known_hostsとauthorized_keysは、共に、共通鍵が書き込まれています。秘密鍵ではありません。共にテキストファイルであるため、エディタで中身を参照することができます。1行に対し1つの公開鍵が登録されています。データが2行あれば、公開鍵が2件登録されていると判断することができます。

SSHでクライアントからサーバーに接続しにいくとき、ホスト認証と、ユーザー認証の2つの認証が行われます。ホスト認証とは、接続先が本当に正しいホストなのかを、確認するために行われる認証で、ユーザー認証とは、接続しようとしている人が、本当に、正しいユーザーなのかを確認するために行われる認証です。ホスト認証とユーザー認証は、共に、公開暗号方式で行われます。ホスト認証が先に行われ、次にユーザー認証が行われます。2つの認証が共に成功して、晴れて、SSH接続が確立されます。

SSH接続を始めて行うとき、前準備として、ssh-keygenコマンドを使って、公開鍵と秘密鍵のペア鍵を作成しますが、このときに作成する鍵は、ユーザー認証で使う鍵です。

ホスト認証で利用する鍵も、ssh-keygenコマンドで作成することはできますが、普通は作成することはありません。デフォルトでOSの中に既に入っています。大抵の場合、デフォルトで入っている鍵をそのまま使って、ホスト認証を行っています。よって、ホスト認証がどのように行われているのかは、あまり意識する必要がありませんでした。

ユーザー認証で用いられるペア鍵は、大抵、~/.sshに作りますが、ホスト認証で用いられるペア鍵は、/ect/sshの中に入っています。ホスト認証が行われるとき、サーバーは、/ect/sshの中にある公開鍵をクライアント側に送信します。送信された公開鍵は、クライアントの~/.ssh/know_hostsの中に書き込まれます。

公開鍵が書き込まれるときに、「書き込みますがよろしいですか。」といった、注意メッセージが必ず表示されます。注意メッセージが表示されるのは、始めてSSH接続が行われるときだけです。2回目以降の接続時には表示されません。ホスト認証では、~/.ssh/know_hostsに登録された公開鍵を使って暗号化を行い、サーバー側の、/ect/sshにある秘密鍵を使って復号化を行います。

ホスト認証が必要な理由は、なりすましを防止のためです。なりすましとは、自分が接続したい本当のサーバーではなく、誘導されて別のサーバーに接続してしまうことです。ホスト認証で失敗した場合、なりすましのサーバーに誘導された可能性があります。しかし、滅多にある話ではないとは思います。なりすましのサーバーには、本当のサーバーが持っている秘密鍵は持っていないため、公開鍵で暗号化したデータをなりすましサーバーの秘密鍵で復号化しようとして失敗したのです。

もし、本当のサーバーに接続したにも関わらず、ホスト認証で失敗するようなことがあれば、サーバー側でペア鍵が新しく作り変えられた可能性があります。そのようなときは、~/.ssh/know_hostsをエディタで開いて、古い公開鍵が登録されている行を1行削除して、新しい公開鍵をコピペすればOKです。ときどきありがちなトラブルシューティングの例です。

~/.ssh/know_hostsは、ホスト認証を行うために、クライアント側で作成されるのに対し、~/.ssh/authorized_keysはユーザー認証のときに作られます。ユーザー認証は、ホスト認証とは逆で、サーバー側で公開鍵を使って暗号化したデータを、クライアント側に送信し、クライアント側の秘密鍵を使って復号化する手順となります。サーバー側で保持している公開鍵を登録するファイルが、~/.ssh/authorized_keysです。

SSHサーバーは、公開鍵を登録するに従って、~/.ssh/authorized_keysのファイル容量は、どんどんと大きくなっていくが、SSHクライアントは、接続先のSSHサーバーが増えるに従い、~/.ssh/know_hostsの容量が増えていくことになります。SSHクライアントが、ローカルの~/.ssh/authorized_keysに公開鍵を追加することは、ほぼほぼないと思われます。自身の環境においても、~/.ssh/authorized_keysは、389byteであるのに対し、~/.ssh/know_hostsは1.1Kbyteあります。

まとめ

~/.ssh/know_hosts ホスト認証で使われる公開鍵が、クライアント側で登録されています。

~/.ssh/authorized_keys ユーザー認証で使われる公開鍵が、サーバー側で登録されています。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有